<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>simvoc.input.egee_rtm_input</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
  <script type="text/javascript" src="epydoc.js"></script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="simvoc-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            >SimVOC</th>
          </tr></table></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        <a href="simvoc-module.html">Package&nbsp;simvoc</a> ::
        <a href="simvoc.input-module.html">Package&nbsp;input</a> ::
        Module&nbsp;egee_rtm_input
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<!-- ==================== MODULE DESCRIPTION ==================== -->
<h1 class="epydoc">Module egee_rtm_input</h1><p class="nomargin-top"><span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html">source&nbsp;code</a></span></p>
<p>Input handler for EGEE RTM traces (available from 
  http://grid-observatory.org). RTM traces are downloaded in a .tar.gz 
  archive format, which should NOT be extracted. Instead, this module will 
  process the archives directly, retrieving the job data from within the 
  archive and producing one output file per archive. The resulting job file
  will contain data for all Virtual Organizations observed on the grid for 
  the entire week contained within the archive.</p>
  <p>This module may be invoked as a script as follows:</p>
  <p>python egee_rtm_input.py [-d &lt;output_directory&gt;] [-c 
  &lt;comment&gt;]    [-p &lt;cpu_bound&gt;] &lt;input_1&gt; [... 
  &lt;input_N&gt;]</p>
  <p>Each archive will be converted into a job file, using an automated 
  naming scheme. The downloaded archive files have filenames with the form 
  EGEE-YYYY-WW-RTM.tar.gz, which will be translated into an output file 
  name with the form egee-YYYY-WW.jobs (where YYYY is the 4-digit year and 
  WW is the week number). A second file, with a name in the form 
  egee-YYYY-WW.vo, will be created with dynamic Virtual Organization 
  information.</p>

<!-- ==================== CLASSES ==================== -->
<a name="section-Classes"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Classes</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-Classes"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="simvoc.input.egee_rtm_input.JobTrace-class.html" class="summary-name">JobTrace</a><br />
      Decoder for a single job trace file (a member of the outer tar 
        archive), buffering the trace in memory as a list of rows.
    </td>
  </tr>
</table>
<!-- ==================== FUNCTIONS ==================== -->
<a name="section-Functions"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Functions</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-Functions"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">bool</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.input.egee_rtm_input-module.html#select_completed" class="summary-sig-name">select_completed</a>(<span class="summary-sig-arg">row</span>)</span><br />
      Row selector for rows that indicate successful job completion in the 
      RTM data set.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#select_completed">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">bool</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.input.egee_rtm_input-module.html#select_times" class="summary-sig-name">select_times</a>(<span class="summary-sig-arg">row</span>,
        <span class="summary-sig-arg">time_start_col</span>,
        <span class="summary-sig-arg">time_end_col</span>,
        <span class="summary-sig-arg">start</span>,
        <span class="summary-sig-arg">end</span>)</span><br />
      Selects a row if the job starts and ends within a specified time 
      range (seconds since the epoch, UTC).</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#select_times">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">bool</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.input.egee_rtm_input-module.html#select_nonzero" class="summary-sig-name">select_nonzero</a>(<span class="summary-sig-arg">row</span>,
        <span class="summary-sig-arg">col_nums</span>)</span><br />
      Selects a row if specific column numbers are non-zero</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#select_nonzero">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">number</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.input.egee_rtm_input-module.html#first_nonzero" class="summary-sig-name">first_nonzero</a>(<span class="summary-sig-arg">row</span>,
        <span class="summary-sig-arg">fields</span>)</span><br />
      Returns the first of several specified fields in a row, where the 
      value of the field is not equal to zero.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#first_nonzero">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">float</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.input.egee_rtm_input-module.html#filter_best_running_epoch" class="summary-sig-name">filter_best_running_epoch</a>(<span class="summary-sig-arg">row</span>)</span><br />
      Returns the &quot;best&quot; job starting time from an input row by 
      comparing the LRMS start time and the LM start time to the job 
      submission time (to ensure the start time is after the submission 
      time).</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#filter_best_running_epoch">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">float</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.input.egee_rtm_input-module.html#filter_best_done_epoch" class="summary-sig-name">filter_best_done_epoch</a>(<span class="summary-sig-arg">row</span>)</span><br />
      Returns the &quot;best&quot; job ending time from an input row.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#filter_best_done_epoch">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">float</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.input.egee_rtm_input-module.html#filter_best_wn_time" class="summary-sig-name">filter_best_wn_time</a>(<span class="summary-sig-arg">row</span>)</span><br />
      Selects the best job running time (worker node time), favoring the 
      LRMS data over the LM data.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#filter_best_wn_time">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">float</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.input.egee_rtm_input-module.html#BEST_RUNNING_EPOCH" class="summary-sig-name">BEST_RUNNING_EPOCH</a>(<span class="summary-sig-arg">row</span>)</span><br />
      Returns the &quot;best&quot; job starting time from an input row by 
      comparing the LRMS start time and the LM start time to the job 
      submission time (to ensure the start time is after the submission 
      time).</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#filter_best_running_epoch">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">float</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.input.egee_rtm_input-module.html#BEST_DONE_EPOCH" class="summary-sig-name">BEST_DONE_EPOCH</a>(<span class="summary-sig-arg">row</span>)</span><br />
      Returns the &quot;best&quot; job ending time from an input row.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#filter_best_done_epoch">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">float</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.input.egee_rtm_input-module.html#BEST_WN_TIME" class="summary-sig-name">BEST_WN_TIME</a>(<span class="summary-sig-arg">row</span>)</span><br />
      Selects the best job running time (worker node time), favoring the 
      LRMS data over the LM data.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#filter_best_wn_time">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">bool</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.input.egee_rtm_input-module.html#ONLY_COMPLETED_JOBS" class="summary-sig-name">ONLY_COMPLETED_JOBS</a>(<span class="summary-sig-arg">row</span>)</span><br />
      Row selector for rows that indicate successful job completion in the 
      RTM data set.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#select_completed">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="simvoc.input.egee_rtm_input-module.html#load_archive" class="summary-sig-name">load_archive</a>(<span class="summary-sig-arg">tarfilename</span>,
        <span class="summary-sig-arg">jw</span>,
        <span class="summary-sig-arg">vw</span>,
        <span class="summary-sig-arg">cpu_bound</span>=<span class="summary-sig-default">100</span>)</span><br />
      Loads a tar archive of RTM data, converting each record in the data 
      set into a job record that is written to the output file using a 
      JobWriter instance.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#load_archive">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
</table>
<!-- ==================== VARIABLES ==================== -->
<a name="section-Variables"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Variables</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-Variables"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="JOB_ID"></a><span class="summary-name">JOB_ID</span> = <code title="0">0</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="RTM_TYPE"></a><span class="summary-name">RTM_TYPE</span> = <code title="1">1</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="FINAL_REASON"></a><span class="summary-name">FINAL_REASON</span> = <code title="2">2</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="FINAL_EXIT_CODE"></a><span class="summary-name">FINAL_EXIT_CODE</span> = <code title="3">3</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="RB"></a><span class="summary-name">RB</span> = <code title="4">4</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="UI"></a><span class="summary-name">UI</span> = <code title="5">5</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="CE"></a><span class="summary-name">CE</span> = <code title="6">6</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="WN"></a><span class="summary-name">WN</span> = <code title="7">7</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="VO"></a><span class="summary-name">VO</span> = <code title="8">8</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="DN"></a><span class="summary-name">DN</span> = <code title="9">9</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="REQUIREMENTS"></a><span class="summary-name">REQUIREMENTS</span> = <code title="10">10</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="RANK"></a><span class="summary-name">RANK</span> = <code title="11">11</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="REGISTRATION_TIME_STRING"></a><span class="summary-name">REGISTRATION_TIME_STRING</span> = <code title="12">12</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="TIME_WRITTEN_STRING"></a><span class="summary-name">TIME_WRITTEN_STRING</span> = <code title="13">13</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="UI_REGISTER_EPOCH"></a><span class="summary-name">UI_REGISTER_EPOCH</span> = <code title="14">14</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="NS_ACCEPTED_EPOCH"></a><span class="summary-name">NS_ACCEPTED_EPOCH</span> = <code title="15">15</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="WLM_MATCH_EPOCH"></a><span class="summary-name">WLM_MATCH_EPOCH</span> = <code title="16">16</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="JC_TRANSFER_EPOCH"></a><span class="summary-name">JC_TRANSFER_EPOCH</span> = <code title="17">17</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="LM_ACCEPTED_EPOCH"></a><span class="summary-name">LM_ACCEPTED_EPOCH</span> = <code title="18">18</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="LM_RUNNING_EPOCH"></a><span class="summary-name">LM_RUNNING_EPOCH</span> = <code title="19">19</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="LM_DONE_EPOCH"></a><span class="summary-name">LM_DONE_EPOCH</span> = <code title="20">20</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="LRMS_RUNNING_EPOCH"></a><span class="summary-name">LRMS_RUNNING_EPOCH</span> = <code title="21">21</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="LRMS_DONE_EPOCH"></a><span class="summary-name">LRMS_DONE_EPOCH</span> = <code title="22">22</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="REGISTRATION_TIME"></a><span class="summary-name">REGISTRATION_TIME</span> = <code title="23">23</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="MATCH_TIME"></a><span class="summary-name">MATCH_TIME</span> = <code title="24">24</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="UPTO_SCHED_XFER_TIME"></a><span class="summary-name">UPTO_SCHED_XFER_TIME</span> = <code title="25">25</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="UPTO_SCHED_ACCEPT_TIME"></a><span class="summary-name">UPTO_SCHED_ACCEPT_TIME</span> = <code title="26">26</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="LM_CE_TOTAL_TIME"></a><span class="summary-name">LM_CE_TOTAL_TIME</span> = <code title="27">27</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="LM_CE_SCHEDULED_TIME"></a><span class="summary-name">LM_CE_SCHEDULED_TIME</span> = <code title="28">28</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="LM_WN_TIME"></a><span class="summary-name">LM_WN_TIME</span> = <code title="29">29</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="LRMS_WN_TIME"></a><span class="summary-name">LRMS_WN_TIME</span> = <code title="30">30</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="TOTAL_TIME"></a><span class="summary-name">TOTAL_TIME</span> = <code title="31">31</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="EFFICIENCY"></a><span class="summary-name">EFFICIENCY</span> = <code title="32">32</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="REQUIREMENTS_COUNT"></a><span class="summary-name">REQUIREMENTS_COUNT</span> = <code title="33">33</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="RANK_COUNT"></a><span class="summary-name">RANK_COUNT</span> = <code title="34">34</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="RESUBMIT_COUNT"></a><span class="summary-name">RESUBMIT_COUNT</span> = <code title="35">35</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="LM_RS_WASTED_WN_TIME"></a><span class="summary-name">LM_RS_WASTED_WN_TIME</span> = <code title="36">36</code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="simvoc.input.egee_rtm_input-module.html#EGEE_TYPE_MAP" class="summary-name">EGEE_TYPE_MAP</a> = <code title="(&lt;type 'str'&gt;,
 &lt;type 'str'&gt;,
 &lt;type 'str'&gt;,
 &lt;type 'str'&gt;,
 &lt;type 'str'&gt;,
 &lt;type 'str'&gt;,
 &lt;type 'str'&gt;,
 &lt;type 'str'&gt;,
..."><code class="variable-group">(</code>&lt;type 'str'&gt;<code class="variable-op">, </code>&lt;type 'str'&gt;<code class="variable-op">, </code>&lt;type 'str'&gt;<code class="variable-op">, </code>&lt;ty<code class="variable-ellipsis">...</code></code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="simvoc.input.egee_rtm_input-module.html#SELECTOR" class="summary-name">SELECTOR</a> = <code title="[(select_nonzero, (UI_REGISTER_EPOCH,)), ONLY_COMPLETED_JOBS]">[(select_nonzero, (UI_REGISTER_EPOCH,)), ONLY_COMPL<code class="variable-ellipsis">...</code></code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="simvoc.input.egee_rtm_input-module.html#COLUMNS" class="summary-name">COLUMNS</a> = <code title="[UI_REGISTER_EPOCH, JOB_ID, VO, BEST_WN_TIME, CE, BEST_RUNNING_EPOCH]"><code class="variable-group">[</code>14<code class="variable-op">, </code>0<code class="variable-op">, </code>8<code class="variable-op">, </code>&lt;function filter_best_wn_time at 0x242748<code class="variable-ellipsis">...</code></code>
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'simvoc.input'"><code class="variable-quote">'</code><code class="variable-string">simvoc.input</code><code class="variable-quote">'</code></code>
    </td>
  </tr>
</table>
<p class="indent-wrapped-lines"><b>Imports:</b>
  <a href="simvoc.input.datafilter-module.html#data_filter" title="simvoc.input.datafilter.data_filter">data_filter</a>,
  <a href="simvoc.input.job_format_writer.JobWriter-class.html" title="simvoc.input.job_format_writer.JobWriter">JobWriter</a>,
  <a href="simvoc.input.tabbed_data_input.TabbedData-class.html" title="simvoc.input.tabbed_data_input.TabbedData">TabbedData</a>,
  <a href="simvoc.input.vo_format_writer.VOWriter-class.html" title="simvoc.input.vo_format_writer.VOWriter">VOWriter</a>,
  <span title="tarfile">tarfile</span>
</p><br />
<!-- ==================== FUNCTION DETAILS ==================== -->
<a name="section-FunctionDetails"></a>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Function Details</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-FunctionDetails"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
</table>
<a name="select_completed"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">select_completed</span>(<span class="sig-arg">row</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#select_completed">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Row selector for rows that indicate successful job completion in the 
  RTM data set. It should be noted that many RTM entries do not show as 
  completed and will be discarded if this selector is used.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>row</code></strong> (sequence) - Row to be tested in the selector</li>
    </ul></dd>
    <dt>Returns: bool</dt>
        <dd>True iff the RTM data set indicates that the job represented by 
          the input row has completed</dd>
  </dl>
</td></tr></table>
</div>
<a name="select_times"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">select_times</span>(<span class="sig-arg">row</span>,
        <span class="sig-arg">time_start_col</span>,
        <span class="sig-arg">time_end_col</span>,
        <span class="sig-arg">start</span>,
        <span class="sig-arg">end</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#select_times">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Selects a row if the job starts and ends within a specified time range
  (seconds since the epoch, UTC).</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>row</code></strong> (sequence) - Input row</li>
        <li><strong class="pname"><code>time_start_col</code></strong> (int) - Column number containing the start time</li>
        <li><strong class="pname"><code>time_end_col</code></strong> (int) - Column number containing the end time</li>
        <li><strong class="pname"><code>start</code></strong> (float) - Start time in seconds UTC</li>
        <li><strong class="pname"><code>end</code></strong> (float) - End time in seconds UTC</li>
    </ul></dd>
    <dt>Returns: bool</dt>
        <dd>True iff the job starts and ends within the specified time frame</dd>
  </dl>
</td></tr></table>
</div>
<a name="select_nonzero"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">select_nonzero</span>(<span class="sig-arg">row</span>,
        <span class="sig-arg">col_nums</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#select_nonzero">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Selects a row if specific column numbers are non-zero</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>row</code></strong> (sequence) - Input row</li>
        <li><strong class="pname"><code>col_nums</code></strong> - Tuple of column numbers (ints) to check</li>
    </ul></dd>
    <dt>Returns: bool</dt>
        <dd>True iff all requested columns have non-zero values</dd>
  </dl>
</td></tr></table>
</div>
<a name="first_nonzero"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">first_nonzero</span>(<span class="sig-arg">row</span>,
        <span class="sig-arg">fields</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#first_nonzero">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Returns the first of several specified fields in a row, where the 
  value of the field is not equal to zero.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>row</code></strong> (sequence) - Input row</li>
        <li><strong class="pname"><code>fields</code></strong> - Field numbers to check (tuple of ints)</li>
    </ul></dd>
    <dt>Returns: number</dt>
        <dd>a value (int/float) or zero if all fields are zero</dd>
  </dl>
</td></tr></table>
</div>
<a name="filter_best_running_epoch"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">filter_best_running_epoch</span>(<span class="sig-arg">row</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#filter_best_running_epoch">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Returns the &quot;best&quot; job starting time from an input row by 
  comparing the LRMS start time and the LM start time to the job submission
  time (to ensure the start time is after the submission time). If the LRMS
  time is available, it will be favored over the LM time.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>row</code></strong> (sequence) - Input row</li>
    </ul></dd>
    <dt>Returns: float</dt>
        <dd>job start time in seconds UTC</dd>
  </dl>
</td></tr></table>
</div>
<a name="filter_best_done_epoch"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">filter_best_done_epoch</span>(<span class="sig-arg">row</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#filter_best_done_epoch">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Returns the &quot;best&quot; job ending time from an input row. When 
  the LRMS time is available, it will be used instead of the LM time.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>row</code></strong> (sequence) - Input row</li>
    </ul></dd>
    <dt>Returns: float</dt>
        <dd>the job end time in seconds UTC</dd>
  </dl>
</td></tr></table>
</div>
<a name="filter_best_wn_time"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">filter_best_wn_time</span>(<span class="sig-arg">row</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#filter_best_wn_time">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Selects the best job running time (worker node time), favoring the 
  LRMS data over the LM data.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>row</code></strong> (sequence) - Input row</li>
    </ul></dd>
    <dt>Returns: float</dt>
        <dd>the job length in seconds</dd>
  </dl>
</td></tr></table>
</div>
<a name="BEST_RUNNING_EPOCH"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">BEST_RUNNING_EPOCH</span>(<span class="sig-arg">row</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#filter_best_running_epoch">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Returns the &quot;best&quot; job starting time from an input row by 
  comparing the LRMS start time and the LM start time to the job submission
  time (to ensure the start time is after the submission time). If the LRMS
  time is available, it will be favored over the LM time.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>row</code></strong> (sequence) - Input row</li>
    </ul></dd>
    <dt>Returns: float</dt>
        <dd>job start time in seconds UTC</dd>
  </dl>
</td></tr></table>
</div>
<a name="BEST_DONE_EPOCH"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">BEST_DONE_EPOCH</span>(<span class="sig-arg">row</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#filter_best_done_epoch">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Returns the &quot;best&quot; job ending time from an input row. When 
  the LRMS time is available, it will be used instead of the LM time.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>row</code></strong> (sequence) - Input row</li>
    </ul></dd>
    <dt>Returns: float</dt>
        <dd>the job end time in seconds UTC</dd>
  </dl>
</td></tr></table>
</div>
<a name="BEST_WN_TIME"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">BEST_WN_TIME</span>(<span class="sig-arg">row</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#filter_best_wn_time">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Selects the best job running time (worker node time), favoring the 
  LRMS data over the LM data.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>row</code></strong> (sequence) - Input row</li>
    </ul></dd>
    <dt>Returns: float</dt>
        <dd>the job length in seconds</dd>
  </dl>
</td></tr></table>
</div>
<a name="ONLY_COMPLETED_JOBS"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">ONLY_COMPLETED_JOBS</span>(<span class="sig-arg">row</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#select_completed">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Row selector for rows that indicate successful job completion in the 
  RTM data set. It should be noted that many RTM entries do not show as 
  completed and will be discarded if this selector is used.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>row</code></strong> (sequence) - Row to be tested in the selector</li>
    </ul></dd>
    <dt>Returns: bool</dt>
        <dd>True iff the RTM data set indicates that the job represented by 
          the input row has completed</dd>
  </dl>
</td></tr></table>
</div>
<a name="load_archive"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">load_archive</span>(<span class="sig-arg">tarfilename</span>,
        <span class="sig-arg">jw</span>,
        <span class="sig-arg">vw</span>,
        <span class="sig-arg">cpu_bound</span>=<span class="sig-default">100</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="simvoc.input.egee_rtm_input-pysrc.html#load_archive">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  <p>Loads a tar archive of RTM data, converting each record in the data 
  set into a job record that is written to the output file using a 
  JobWriter instance. The list of Virtual Organizations found in the trace 
  file will be written to the specified VOWriter instance.</p>
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>tarfilename</code></strong> (str) - Name of the tar file to open</li>
        <li><strong class="pname"><code>jw</code></strong> - JobWriter instance to which jobs should be written</li>
        <li><strong class="pname"><code>vw</code></strong> - VOWriter instance to which the VO list will be written</li>
    </ul></dd>
  </dl>
</td></tr></table>
</div>
<br />
<!-- ==================== VARIABLES DETAILS ==================== -->
<a name="section-VariablesDetails"></a>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Variables Details</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-VariablesDetails"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
</table>
<a name="EGEE_TYPE_MAP"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">EGEE_TYPE_MAP</h3>
  
  <dl class="fields">
  </dl>
  <dl class="fields">
    <dt>Value:</dt>
      <dd><table><tr><td><pre class="variable">
<code class="variable-group">(</code>&lt;type 'str'&gt;<code class="variable-op">,</code>
 &lt;type 'str'&gt;<code class="variable-op">,</code>
 &lt;type 'str'&gt;<code class="variable-op">,</code>
 &lt;type 'str'&gt;<code class="variable-op">,</code>
 &lt;type 'str'&gt;<code class="variable-op">,</code>
 &lt;type 'str'&gt;<code class="variable-op">,</code>
 &lt;type 'str'&gt;<code class="variable-op">,</code>
 &lt;type 'str'&gt;<code class="variable-op">,</code>
<code class="variable-ellipsis">...</code>
</pre></td></tr></table>
</dd>
  </dl>
</td></tr></table>
</div>
<a name="SELECTOR"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">SELECTOR</h3>
  
  <dl class="fields">
  </dl>
  <dl class="fields">
    <dt>Value:</dt>
      <dd><table><tr><td><pre class="variable">
[(select_nonzero, (UI_REGISTER_EPOCH,)), ONLY_COMPLETED_JOBS]
</pre></td></tr></table>
</dd>
  </dl>
</td></tr></table>
</div>
<a name="COLUMNS"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">COLUMNS</h3>
  
  <dl class="fields">
  </dl>
  <dl class="fields">
    <dt>Value:</dt>
      <dd><table><tr><td><pre class="variable">
[UI_REGISTER_EPOCH, JOB_ID, VO, BEST_WN_TIME, CE, BEST_RUNNING_EPOCH]
</pre></td></tr></table>
</dd>
  </dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="simvoc-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            >SimVOC</th>
          </tr></table></th>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
  <tr>
    <td align="left" class="footer">
    Generated by Epydoc 3.0 on Fri Oct 23 11:04:28 2009
    </td>
    <td align="right" class="footer">
      <a target="mainFrame" href="http://epydoc.sourceforge.net"
        >http://epydoc.sourceforge.net</a>
    </td>
  </tr>
</table>

<script type="text/javascript">
  <!--
  // Private objects are initially displayed (because if
  // javascript is turned off then we want them to be
  // visible); but by default, we want to hide them.  So hide
  // them unless we have a cookie that says to show them.
  checkCookie();
  // -->
</script>
</body>
</html>
